Html element onerror override #2161
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes this Typescript issue.
Originally, I created this PR, but closed it as the that approach wasn't ideal.
I started with
Omit<GlobalEventHandlers, 'onerror'>
as an approach. However, I quickly realized it isn't the correct path and creates a whole slew of new problems due to how event handlers are mapped to different elements during the emit phase. (if you're curious to see what exactly I ran into, I can push up a separate PR).What this change does:
Introduces a new type
DocumentOrGlobalOnErrorHandler
which extends theOnErrorEventHandlerNonNull
type withHTMLElement
specific handlers. This type then overridesGlobalEventHandlers
onerror
property. This allow us to be backwards compatible and fix the bug.This did require a change to both
types.ts
andemitter.ts
so thatexposed
was accounted for when creating a new typedef. I needed the newDocumentOrGlobalOnErrorHandler
to only be exposed on the dom library.the
onerror
ofGlobalEventHandlers
cannot be overridden by theoverrideType.ts
file. I tried to a few times, in bothmixin-ins
andinterfaces
. It turns out it has to be overidden in thepatches/events.kdl
file.Let me know if I missed anything or another approach would be better. I think this threads the needle nicely as it works only on
dom
elements and still provides both the global andHTMLElement
specificonerror
handling types.